/**
 * 类的构造函数
 * constructor
 * 1. 构造函数数默认存在的 如何不定义 则为空方法 constructor(){} 只是不显示而已
 * 2. 子类继承了父类 如果子类定义构造函数 必须调用一下 父类的构造函数 super([参数]) 如果父类没有参数就不填，如果父类有参数 必须填参数
 **/ 

class A{
    constructor(public name:string,public age: number){
        this.name = name;
        this.age = age;
    }
    public info():void{
        console.log(this.name,this.age);
    }
}

class A1 extends A{
    constructor(public name: string, public age: number, public score:number){
        //子类里定义构造函数 需要把父类的构造函数调用一次，当然如果子类没有构造函数就不用了
       super(name,age);
    }
    newInfo():void{
        console.log(this.name, this.age, this.score);
    }
}

class B{}

class B1 extends B{
    constructor(public name:string){
        //注意即使父类没有constructor定义，只要子类里定义了 constructor 就需要调用一次super()
        super();
    }
    toSay():void{
        console.log(this.name,22,88);
    }
}

let aa = new A('小花',18);
aa.info();

let a1 = new A1('小梅',20,90);
a1.newInfo();

let b1 = new B1('小明');
b1.toSay();



